package com.yuanfeng.business.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanfeng.business.dto.*;
import com.yuanfeng.business.entity.ShopBaseEntity;
import com.yuanfeng.commoms.dto.goods.ShopListQueryDTO;
import com.yuanfeng.commoms.dto.shop.ArticleShopDTO;
import com.yuanfeng.commoms.dto.shop.ShopTreasureGradeUpdateDTO;
import com.yuanfeng.commoms.dto.shop.WebShopListQueryDTO;
import com.yuanfeng.commoms.dto.shop.WebShopListQueryEsDTO;
import com.yuanfeng.commoms.dto.userms.UserTokenBeanDTO;
import com.yuanfeng.commoms.util.ResponseResult;
import com.yuanfeng.commoms.vo.shop.GdsShopDetailResultVO;
import com.yuanfeng.commoms.vo.shop.InvoiceSwitchEntityVO;
import com.yuanfeng.commoms.vo.shop.ShopUserMessageResultVO;

import java.io.IOException;
import java.util.List;
import java.util.Map;


/**
 * @author Administrator
 */
public interface ShopBaseService extends IService<ShopBaseEntity> {

    /**
     * es 查询店铺数据
     * @return
     */
    List<ArticleShopDTO> selectAllShop();

    /**
     * 根据店铺id查询店铺信息
     * @param shopId
     * @return
     */
    WebShopListQueryEsDTO selectByShopId2(Integer shopId);
    /**
     * 移动端根据店铺id查询店铺信息
     * @param shopId
     * @return
     */
    ShopListQueryDTO selectByH5ShopId(Integer shopId);

    /**
     * 判断用户的身份 商家 供应商 门店 普通用户
     * @param userTokenBeanDTO
     * @return
     */
    ResponseResult checkTheStatus(UserTokenBeanDTO userTokenBeanDTO);

    /**
     * 查询店铺的发票状态
     * @param paramTmp
     * @return
     */
    InvoiceSwitchEntityVO queryShopInvoiceSwitch(Map<String, Object> paramTmp);

    /**
     * 根据shopid 查询店铺信息
     * @param shopId
     * @return
     */
    GdsShopDetailResultVO queryShopinfoByShopId(Integer shopId);

    /**
     * 查询店铺首页信息
     *
     * @param shopId
     * @return
     */
    ResponseResult selectByShopId(Integer shopId);

    /**
     * 店铺收藏量更新
     * @param paraMap
     * @return
     */
    ResponseResult updateShopCollect(Map<String, String> paraMap);

    /**
     * 获取卖家id卖家名
     * @param shopId
     * @return
     */
    ShopUserMessageResultVO queryUserId(Integer shopId);

    /**
     * 校验店铺名称
     * @param shopName
     * @return
     */
    ResponseResult checkShopNameExist(String shopName);

    /**
     * 删除店铺经营类目
     *
     * @param shopClassBindQueryDTO
     * @return
     */
    ResponseResult deleteShopClassBind(ShopClassBindQueryDTO shopClassBindQueryDTO);

    /**
     * 批量删除店铺经营类目
     *
     * @param param
     * @return
     */
    ResponseResult deleteShopClassBindBatch(ShopClassBindBatchDeleteDTO param);

    /**
     * 更新店铺经营类目
     *
     * @param param
     * @return
     */
    ResponseResult updateShopClassBindBatch(GdbMerchantClassBindDTO param);

    /**
     * 查询店铺首页
     * @param param
     * @return
     */
    ResponseResult queryShopIndex(WebShopGoodsListQueryDTO param);

    /**
     * 查询特色店铺的信息
     * @param map
     * @return
     */
    ResponseResult queryByShopIdFind(Map<String, String> map);


    /**
     * 查询是否存在店铺
     *
     * @param map
     * @return
     */
    ShopBaseEntity queryShopStatus(Map<String, String> map);

    /**
     * 查看运营信息
     *
     * @param param
     * @return
     */
    ResponseResult queryOperateMessage(PersonMessageQueryDTO param);

    /**
     * 查询商家发票功能是否开启
     *
     * @param param Map<Object,Object>
     * @return ResultResp
     */
    ResponseResult queryShopInvoiceSwitchStatus(Map<String, Object> param);

    /**
     * 判断个人店铺、企业店铺
     * @param shopId
     * @return
     */
    ResponseResult queryQualifications(Integer shopId);

    /**
     * 查询是否是自己的商品或者经销商品
     * @param param
     * @return
     */
    ResponseResult checkIsSelfGoods(Map<String, Object> param);

    /**
     * 判断用户是否入驻和个人或企业入驻
     * @param param
     * @return
     */
    ResponseResult queryShopTypeStatus(UserTokenBeanDTO param);

    /**
     * 店铺免额度查询
     * @param param
     * @return
     */
    ResponseResult queryFreeShipping(UserTokenBeanDTO param);

    /**
     * 新增自营店铺
     *
     * @param param
     * @return
     */
    ResponseResult selfshopadd(Map<String,Object> param) throws IOException;
    /**
     * 根据shopId查询shopName
     * @param shopId
     * @return
     */
    String selectShopNameByShopId(Integer shopId);

    /**
     * 新增供应商自营店铺
     *
     * @param param
     * @return
     */
    ResponseResult supplierselfshopadd(Map<String,Object> param) throws IOException;

    /**
     * 删除自营店铺
     * @param paraMap
     * @return
     * @throws IOException
     */
    ResponseResult deleteselfshop(Map<String, Object> paraMap);

    /**
     * 库存预警短信提醒
     * @param param
     * @return
     * @throws
     */

    ResponseResult sentInventoryWarningPort(Map<String, String> param);

    /**
     * 查询店铺数量
     *
     * @param map
     * @return
     */
    ResponseResult shopCount(Map<String, Object> map);

    /**
     * 更新店铺免额度
     * @param param
     * @return
     */
    ResponseResult updateFreeShipping(ManageShopFreeShippingDTO param);

    /**
     * 查询每日店铺数量
     *
     * @param map
     * @return
     */
    ResponseResult shopTodayNumber(Map<String, Object> map);

    /**
     *获取店铺列表
     * @param map
     * @return
     */
    ResponseResult queryAllshop(Map<String, Object> map);

    /**
     * 查询自营店铺详情
     *
     * @param shopId
     * @return
     */
   ResponseResult querySelfShopDetail(Integer shopId);

    /**
     * 更新自营店铺
     *
     * @param dto
     * @return
     */
    ResponseResult updateSelfShop(SelfShopUpdateDTO dto);

    /**
     * 查询自营店铺列表
     *
     * @param dto
     * @return
     */
    ResponseResult querySelfShopList(ShopBaseListQueryDTO dto) throws IllegalAccessException;

    /**
     * 店铺设置查询
     *
     * @param param
     * @return
     */
    ResponseResult querySetShop(UserTokenBeanDTO param);

    /**
     * 店铺设置更新
     *
     * @param param
     * @return
     */
    ResponseResult updateSetShop(ManageSetShopParamAddDTO param);

    /**
     * 店铺轮播增加
     *
     * @param param
     * @return
     */
    ResponseResult addShopSlide(ManageShopSlideDTO param);

    /**
     * 店铺轮播查询
     *
     * @param param
     * @return
     */
    ResponseResult queryShopSlide(ManageShopSlideDTO param);

    /**
     * 查询质保金信息
     *
     * @param param
     * @return
     */
    ResponseResult queryDeposit(DepositDetailDTO param);

    /**
     * 更新质保金
     *
     * @param param
     * @return
     */
    ResponseResult updateDeposit(DepositDetailDTO param);

    /**
     * 查询退保信息
     *
     * @param param
     * @return
     */
    ResponseResult queryReturnBond(DepositDetailDTO param);

    /**
     * 更新退保信息
     *
     * @param param
     * @return
     */
    ResponseResult updateReturnBond(ReturnBondDTO param);

    /**
     * 商家申请打开/关闭开票功能
     *
     * @param param
     * @return
     */
    ResponseResult updateInvoiceSwitch(Map<String,Object> param);

    /**
     * 查询商家开票功能状态
     *
     * @param param
     * @return
     */
    ResponseResult queryInvoiceSwitch(Map<String,Object> param);

    /**
     * 平台-查看店铺资质详情
     *
     * @param param
     * @return
     */
    ResponseResult queryShopJoinAptitudeDetailForPlatform(Map<String, Object> param);

    /**
     * 验证
     *
     * @param param
     * @return
     */
    ResponseResult verifyShopMesModify(ShopBusinessModifyVerifyDTO param);

    /**
     * 平台-查看店铺资质列表
     *
     * @param param
     * @return
     */
    ResponseResult queryShopJoinAptitudeListForPlatform(Map<String, Object> param);

    /**
     * 店铺名更改审核
     *
     * @param param
     * @return
     */
    ResponseResult verifyShopNameModify(ShopNameModifyVerifyDTO param);

    /**
     * 查询店铺名更改列表
     *
     * @param param
     * @return
     */
    ResponseResult queryShopNameModifyList(ShopBaseListDTO param);

    /**
     * 导出店铺设置列表
     *
     * @param param
     * @return
     */
    ResponseResult queryShopListExp(ShopBaseListDTO param);

    /**
     * 查询店铺设置列表
     *
     * @param param
     * @return
     */
    ResponseResult queryShopList(ShopBaseListDTO param);

    /**
     * 编辑店铺信息
     *
     * @param param
     * @return
     */
    ResponseResult updateShopBase(ShopBaseUpdateDTO param);

    /**
     * 查询编辑店铺的详情
     *
     * @param param
     * @return
     */
    ResponseResult queryUpdateShopBase(Map<String,Object> param);

    /**
     * 审核商家开票功能
     *
     * @param param Map<Object,Object>
     * @return ResultResp
     */
    ResponseResult auditShopInvoiceSwitch(Map<String, Object> param);

    /**
     * 查询商家开票功能状态
     *
     * @param param Map<Object,Object>
     * @return ResultResp
     */
    ResponseResult queryShopInvoiceSwitchs(ShopBaseListDTO param);

    /**
     * 移动端 查询所有店铺
     * @param param
     * @return
     */
    ResponseResult uniappQueryShopList(ShopListQueryDTO param);

    /**
     * 店铺按月分组统计
     *
     * @param map
     * @return
     */
    ResponseResult shopGroupingStatistics(Map<String, Object> map);

    /**
     * 店铺装修设置
     *
     * @param param
     * @return
     */
    ResponseResult addShopDecoration(ShopDecorationAddDTO param);

    /**
     * 店铺装修设置
     *
     * @param param
     * @return
     */
   ResponseResult queryShopDecoration(UserTokenBeanDTO param);

    /**
     *  获取视频空间数据
     * @param param
     * @return
     */
    ResponseResult queryVideo(ManageShopVideoParamDTO param);

    /**
     * 校验店铺是否为聚宝店铺
     * @param param
     * @return
     */
    ResponseResult checkShopIsTreasure(UserTokenBeanDTO param);


    /**
     * 店铺参与聚宝活动详情查询
     *
     * @param param
     * @return
     */
    ResponseResult queryShopTreasureGrade(UserTokenBeanDTO param);



    /**
     * 店铺参与聚宝活动信息更新
     *
     * @param param
     * @return
     */
    ResponseResult updateShopTreasureGrade(ShopTreasureGradeUpdateDTO param);


    /**
     *店铺列表
     * @param param
     * @return
     */
    ResponseResult queryShopListFilter(WebShopListQueryDTO param) throws IllegalAccessException;

    /**
     * 查询所有非供应商店铺
     * @param param
     * @return
     */
    ResponseResult allRegularStore(ShopBaseListQueryDTO param);


    /**
     * 查询质保金信息
     */
    ResponseResult selectretention(Map<String,Object> map);


    /**
     * 查询店铺质保金列表
     */
    ResponseResult queryshop(Map<String,Object> map);


    /**
     * 查询店铺质保金列表导出
     */
    ResponseResult queryshopExp(Map<String,Object> map);




}
